// 递归深拷贝
export function deepClone(obj) {
  // 根据类型制造一个新的数组或对象 => 指向一个新的空间
  // 由于数组的typeof也是'object',所以用Array.isArray(obj)
  var new_obj = Array.isArray(obj) ? [] : {};
  // 首先判断obj的类型
  // 普通类型
  if (typeof obj != 'object') {
    // 这里不能直接返回obj,不然就是浅拷贝的性质
    return new_obj = obj
  }
  //引用类型
  //数组
  if (obj instanceof Array) {
    for (i = 0; i < obj.length; i++) {
      new_obj[i] = obj[i];
      if (typeof new_obj[i] == 'object') {
        deepClone(new_obj[i])
      }
    }
  } else { //对象
    for (let key in obj) {
      if (obj.hasOwnProperty(key)) {
        // 对象中的数组和对象
        if (typeof obj[key] == 'object') {
          new_obj[key] = deepClone(obj[key]);
        } else { //对象中没有引用类型
          new_obj[key] = obj[key]
        }
      }
    }
  }
  return new_obj;
}
